/*
 * @author QSun
 * @description 防止多个页面元素以及 js 污染，所有功能模块必须使用插件方式实现。
 */
$().ready(function($) {
    $.ajaxSetup({
        headers: {
            'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
        }
    });
});
/*basic-lib*/
var lib = {};
/**
 * 对象遍历
 * @param  {object} o 处理的对象
 * @param  {function} f 具体处理的函数
 * @param  {any} t 附加变量
 * @return {any}
 */
lib.eacho = function(o, f, t){
    if(!o || !f)return;
    for(var i in o ){
        if(!o.hasOwnProperty(i)) continue;
        if (t) {
            f(o[i], i, t);
        } else {
            f(o[i],i);
        }
    }
};
lib.isString = function(str) {
    return true;
    var strReg = /^[\w\u4E00-\uFA29]{1,}$/;
    return strReg.test(str);
};
lib.isInt = function(str) {
    var strReg = /^[\d]{1,}$/;
    return strReg.test(str);
}
/**
 * 计算字符串的长度，全角字符和中文算2个长度
 *
 * @param {string} str
 * @return {number}
 */
lib.getRealLength = function(str) {
    // 用于string.getRealLength的正则对象
    var GET_REAL_LENGTH_REG = /[^\x00-\xff]/g;
    if (typeof str !== 'string') {
        return -1;
    }
    return str.replace(GET_REAL_LENGTH_REG, '**').length;
};
/*/.basic-lib*/
/*uploadImg*/
;(function(win,doc,$,undefined){
     var conf = {
        'name': 'imgUpload',
        'canSubmit': true
    };
    conf.tags = {
        'contain': '.form-group',
        'title': {
            'ele': '#inputTitle',
            'rule': {
                'isNecessary': true,
                'length': 10,
                'format': 'string'
            }
        },
        'resume': {
            'ele': '#inputResume',
            'rule': {
                'isNecessary': false,
                'length': 64,
                'format': 'string'
            }
        },
        'tags': {
            'ele': '#inputTags',
            'rule': {
                'isNecessary': false,
                'length': 5,
                'format': 'array',
                'segmeng': ';'
            }
        },
        'location': {
            'ele': '#inputLoc',
            'rule': {
                'isNecessary': false,
                'length': 32,
                'format': 'string',
            }
        },
        'uploadFile': '#uploadFile',
        'error': '.errorinfo',
        'img': '.addImg'
    };
    conf.html = {
        'error': '<span class="error-info" style="margin-left: 20px;"></span>'
    };

    var self = {};
    self.conf = {};
    self.init = function(conf) {
        self.setOptions(conf);
        self.bind();
    };
    self.setOptions = function(opt){
        self.conf = self.conf || {};
        lib.eacho(opt,function(v, k){
            self.conf[k] = v;
        });
    };
    self.bind = function() {
        for (var key in conf.tags) {
            if(typeof(conf.tags[key]) == 'object'){
                $(conf.tags[key]['ele']).on('change', function(ev) {
                    var key = $(this).attr("key");
                    _vai(key);
                });
            }
        }
        $("body").on('change', '#uploadFile', _upload);
        $(conf.tags.img).abigimage();
        $(conf.tags.img).on('click', function(){

            var src = $(this).attr('src');
            $.abigimage.open(src);
        });
    };
    var _addTags = function() {

    };
    var _showError = function(errorMsg) {
        $(conf.tags.error).text(errorMsg);
        $(conf.tags.error).closest(conf.tags.contain).addClass('has-error');
        $(conf.tags.error).show();
    };
    var _hideError = function() {
        $(conf.tags.error).text('');
        $(conf.tags.error).closest(conf.tags.contain).removeClass('has-error');
        $(conf.tags.error).hide();
        $(conf.tags.img).hide();
    }
    var _upload = function() {
        _hideError();
        $.ajaxFileUpload({
            url:'/img/upload',
            secureuri:false,
            fileElementId:'uploadFile',
            dataType: 'json',
            success: function (data, status){
                switch(data.code) {
                    case 10400:
                        _showError('文件格式错误');
                        break;
                    case 10401:
                        _showError('上传图片错误');
                        break;
                    case 10200:
                        $(conf.tags.img).attr('src', data.imgUrl);
                        $(conf.tags.img).show();
                        break;
                }
            },
            error: function(xhr){
                console.log(xhr);
            }
        })
    };
    var _vail = function(key) {
        conf.canSubmit = true;
        for (var key in conf.tags) {
            if(typeof(conf.tags[key]) == 'object'){
                if(conf.canSubmit == true){
                    _vai(key);
                }
            }
        }
    };
    var _vai = function(key) {
        var eleObj = conf.tags[key];
        var $contain = $(eleObj.ele).closest(conf.tags.contain);
        $contain.removeClass('has-error').find("label").find("span").remove();

        var val = $.trim($(eleObj.ele).val());
        var $errObj = $(conf.html.error);
        if(eleObj.rule.isNecessary){
            if(val == ''){
                $errObj.text('不能为空');
                $contain.addClass('has-error').find("label").append($errObj);
                conf.canSubmit = false;
                return;
            }
        }

        if(eleObj.rule.length){
            var intLen = 0;
            if(eleObj.rule.format == 'string'){
                intLen = val.length;
            } else if(eleObj.rule.format == 'array'){
                var arr = val.split(";");
                intLen = arr.length;
            }
            if(intLen > eleObj.rule.length){
                $errObj.text("最大长度不能超过 " + eleObj.rule.length);
                $contain.addClass('has-error').find("label").append($errObj);
                conf.canSubmit = false;
                return;
            }
        }

    };
    var _submit = function() {
        if(!conf.canSubmit){
            return;
        }
    };
    window[conf.name] = self;
})(window, document, window.jQuery);
/*/.uploadImg*/